﻿#include"Stack.h"

//class Data
//{
//private:
//	int _year;
//	int _month;
//	int _date;
//};

//类

//struct Stack
//{
//	int* a;
//	int top;
//	int capacity;
//};
//
//void StackInit(struct Stack* ps)
//{
//	ps->a = NULL;
//	ps->top = ps->capacity = 0;
//}
//void StackPush(struct Stack* ps, int x)
//{
//	ps->a[ps->top++] = x;
//}
////...
//
//int main()
//{
//	struct Stack st;
//	StackInit(&st)
//	StackPush(&st, 1);
//	//..
//	return 0;
//}

//struct Stack
//{
//	void Init(int n = 10)
//	{
//		a = (int*)malloc(n * sizeof(int));
//		if (a == NULL)
//		{
//			perror("malloc fail");
//			return;
//		}
//		top = 0;
//		capacity = n;
//	}
//	void Push(int x)
//	{
//		a[top++] = x;
//	}
//	void Pop()
//	{
//		assert(!Empty());
//		--top;
//
//	}
//	bool Empty()
//	{
//		return top == 0;
//	}
//
//	void Destory()
//	{
//		free(a);
//		a = nullptr;
//		top = capacity = 0;
//	}
//	//.....
//
//	int* a;
//	int top;
//	int capacity;
//};
//
//
//int main()
//{	
//	//C的还可以用
//	struct Stack ss;
//
//
//	//C++把这个当成了一个类
//	//实例化了一个st的对象
//	Stack st;
//	st.Init();
//	st.Push(1);
//	st.Push(2);
//
//	st.Pop();
//
//	st.Destory();
//
//	return 0;
//}

//class  Data
//{
//public:
//	void Init(int year, int month, int data)
//	{
//		year = year;
//		month = month;
//		data = data;
//	}
//
//private:
//	int year;
//	int month;
//	int data;
//};



//int main()
//{
//	Stack st;
//	st.Init();
//	st.Push(1);
//
//	st.Destroy();
//
//}



//class  Data
//{
//public:
//	void Init(int year, int month, int data)
//	{
//		_year = year;
//		_month = month;
//		_data = data;
//	}
//
//private:
//	int _year;
//	int _month;
//	int _data;
//};
//int main()
//{
//	Data::_year = 2023;
//}

//类的大小
//class A
//{
//public:
//	void Init()
//	{
//		cout << "_a" << endl;
//	}
//private:
//	char _a;
//};
//
//int main()
//{
//	cout << sizeof(A) << endl;
//	return 0;
//}


//// 类中既有成员变量，又有成员函数
//class A1 {
//public:
//	void f1() {}
//private:
//	int _a;
//};
//
//// 类中仅有成员函数
//class A2 {
//public:
//	void f2() {}
//};
//// 类中什么都没有---空类
//class A3
//{
//};
//
//int main()
//{
//	cout << sizeof(A1) << endl;
//	cout << sizeof(A2) << endl;
//	cout << sizeof(A3) << endl;
//
//	return 0;
//}

//this指针

//class Date
//{
//public:
//	void Init(int year, int month, int date)
//	{
//		_year = year;
//		_month = month;
//		_date = date;
//	}
//	void Print()
//	{
//		cout << _year <<" " << _month <<" "<< _date << endl;
//	}
//
//private:
//	int _year;
//	int _month;
//	int _date;
//};
//
//
//int main()
//{
//	Date d1;
//	Date d2;
//	d1.Init(2023, 3, 12);
//	d2.Init(2023, 4, 12);
//
//	d1.Print();
//	d2.Print();
//
//	return 0;
//}


//struct Stack
//{
//
//	int* a;
//	int top;
//	int capacity;
//};
//
//void StackInit(struct Stack* ps)
//{
//	ps->a = (int*)malloc(10 * sizeof(int));
//	if (ps->a == NULL)
//	{
//		perror("malloc fail");
//		return;
//	}
//	ps->top = 0;
//	ps->capacity = 10;
//}
//
//void StackPush(struct Stack* ps, int x)
//{
//	ps->a[ps->top++] = x;
//}
//
//
//
//int main()
//{	
//	
//	struct Stack st;
//	StackInit(&st);
//	StackPush(&st, 1);
//
//
//	return 0;
//}


class Date
{
public:
	void Init(Date* const this, int year, int month, int date)
	{
		this->_year = year;
		this->_month = month;
		this->_date = date;
	}

	//void Init(int year, int month, int date)
	//{
	//	_year = year;
	//	_month = month;
	//	_date = date;
	//}
	void Print(Date* this)
	{
		cout << this->_year <<" " << this->_month <<" "<< this->_date << endl;
	}

private:
	int _year;
	int _month;
	int _date;
};


int main()
{
	Date d1;
	Date d2;
	//Init(&d1,2023,3,12)
	d1.Init(2023, 3, 12);
	//Init(&d2,2023,3,12)
	d2.Init(2023, 4, 12);

	//Print(&d1);
	d1.Print();
	//Print(&d2)
	d2.Print();

	return 0;
}